﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using MyLib.MyUtility;
using MyChocCuoi.DB.Member;
using System.Web;
using System.Data;
namespace MyChocCuoi.Setting
{
    
    /// <summary>
    /// Lưu trữ các cấu hình cho trang web
    /// </summary>
    public class WebSetting
    {
        static MyLog mLog = new MyLog(typeof(WebSetting));

        public static string SpecialKey = "ChILiNh";

        public enum ListPage
        {
            Nothing = 0,
            Home= 1,
            Detail = 2,
            New = 3,
            Image = 4,
            Video = 5,
        }

        public static string FacebookAppID
        {
            get { return MyConfig.GetKeyInConfigFile("FacebookAppID"); }
        }
        public static string FacebookAppSecret
        {
            get { return MyConfig.GetKeyInConfigFile("FacebookAppSecret"); }
        }

        /// <summary>
        /// URL được lưu trước khi login, và sẽ được redirect lại sau khi login
        /// </summary>
        public static string LoginReturnURL
        {
            get
            {
                if (MyCurrent.CurrentPage.Session["LoginReturnURL"] != null)
                {
                    return MyCurrent.CurrentPage.Session["LoginReturnURL"].ToString();
                }
                else
                {
                    return string.Empty;
                }
            }
            set
            {
                MyCurrent.CurrentPage.Session["LoginReturnURL"] = value;
            }
        }

        /// <summary>
        /// Link đăng nhập
        /// </summary>
        public static string LoginURL
        {
            get
            {
                return MyConfig.Domain + "/Dang-nhap.html";
            }
           
        }


        /// <summary>
        /// xóa thông tin đã login
        /// </summary>
        public static void RemoveLogin()
        {
            try
            {
                MyCurrent.CurrentPage.Session["Member"] = new MemberObject();
            }
            catch(Exception ex)
            {
                throw ex;
            }
        }

        /// <summary>
        /// Link trang Note: Domain+"/Note.html?nid="
        /// </summary>
        public static string ErrorLink = MyConfig.Domain + "/Loi.html";

        /// <summary>
        /// Key connection string kết nối đến db trong config
        /// </summary>
        public static string ConnectioKey = "MSSQL_ConnectionKey";

        /// <summary>
        /// Thông tin thành viên đã đăng nhập
        /// </summary>
        public static MemberObject MemberLogined
        {
            get
            {
                if (MyCurrent.CurrentPage.Session["Member"] != null)
                {
                    return (MemberObject)MyCurrent.CurrentPage.Session["Member"];
                }
                else
                {
                    return new MemberObject();
                }
            }
            set
            {
                MyCurrent.CurrentPage.Session["Member"] = value;
            }
        }

        public static void SaveCookie(MemberObject mObject)
        {
            HttpCookie Cookie_Account;
            if (HttpContext.Current.Request.Cookies["mb"] != null)
                HttpContext.Current.Response.Cookies["mb"].Expires = DateTime.Now.AddDays(-1);

            Cookie_Account = new HttpCookie("mb");

            Cookie_Account.Expires = DateTime.Now.AddDays(365);
            Cookie_Account.HttpOnly = true;
            
            //EnCode AccountCode và Accountpassword trường khi lưu xuống Cookie
            Cookie_Account.Values.Add("OpenID", MySecurity.AES.Encrypt(mObject.OpenID, WebSetting.SpecialKey));
            HttpContext.Current.Response.Cookies.Remove("mb");
            HttpContext.Current.Response.Cookies.Add(Cookie_Account);
        }
        public static void RemoveCookie()
        {
            if (HttpContext.Current.Request.Cookies["mb"] != null)
                HttpContext.Current.Response.Cookies["mb"].Expires = DateTime.Now.AddDays(-1);
        }

        /// <summary>
        /// Nếu đã từng đăng nhập và đã lưu vào cookie thì không cần đăng nhập lại 
        /// </summary>
        public static void CheckCookieLogin()
        {
            try
            {
                if (!MemberLogined.IsNull || HttpContext.Current.Request.Cookies["mb"] == null)
                {
                    return;
                }
                HttpCookie Cookie_Account = HttpContext.Current.Request.Cookies["mb"];

                string OpenID = Cookie_Account.Values.Get("OpenID");

                if (string.IsNullOrEmpty(OpenID))
                    return;
                OpenID = MySecurity.AES.Decrypt(OpenID, SpecialKey);
                Member mMember = new Member();
                DataTable mTable = mMember.Select(4, OpenID);

                if (mTable.Rows.Count < 1)
                {
                    RemoveCookie();
                    return;
                }

                List < MemberObject> mList = MyConvert.ConvertTable2Object<MemberObject>(mTable);

                if (mList.Count < 1)
                {
                    RemoveCookie();
                    return;
                }

                MemberLogined = mList[0];
            }
            catch(Exception ex)
            {
                mLog.Error(ex);
            }
        }

        /// <summary>
        /// FIle ảnh cuối cùng mà thành viên upload lên cho 1 tin bài.
        /// Nếu file ảnh này tồn tại khi upload ảnh thì ảnh này sẽ bị xóa đi và thay thế bằng ảnh mới upload
        /// </summary>
        public static string LastImageUpload
        {
            get
            {
                if (MyCurrent.CurrentPage.Session["LastImageUpload"] != null)
                {
                    return MyCurrent.CurrentPage.Session["LastImageUpload"].ToString();
                }
                else
                {
                    return string.Empty;
                }
            }
            set
            {
                MyCurrent.CurrentPage.Session["LastImageUpload"] = value;
            }
        }

        public static string GetFullLinkImage(string Image)
        {
            return MyConfig.ResourceLink + Image.Replace("~", "").Replace("..", "");
        }

        public static string Description
        {
            get
            {
                return "ChocCuoi là góc thư giãn lành mạnh cho giới trẻ";
            }
        }


    }

    
}
